package com.arron.classLoadAndInnit;

/**
 * @Classname Father
 * @Description TODO
 * @Date 2020/8/15 17:26
 * @Created by 刘
 */

/**
 * 执行<clinit()>方法
 * 父类的初始化，执行顺序取决于代码编写顺序
 * 1.执行静态赋值代码 int j= method();
 * 2.执行静态代码块
 * 父类的实例化 ，执行init方法
 * 1.super方法（最前）
 * 2.i= test();
 * 3.非静态代码块
 * 4.构造方法（最后）
 */

public class Father {

    private int i = test();
    private static int j = method();

    static {
        System.out.println("(1)");
    }

    public Father() {
        System.out.println("(2)");
    }

    {
        System.out.println("(3)");
    }

    public int test() {
        System.out.println("(4)");
        return 1;
    }

    public static int method() {
        System.out.println("(5)");
        return 1;
    }
}
